<?
require_once dirname(__FILE__) . '/cbase.php';

class CPerfil extends CBase {
	
	public function __construct() {
		parent::__construct();
	}
	
	public function index() {
		redirect('cperfil/listar/', 'refresh');
	}
	
	public function listar() {
		$this->template->add_js(js_url() . 'perfil/listar.js');
		$this->template->write_view('conteudo','perfil/listar');
		$this->template->render();
	}
	
	public function manter($id) {
		$obj = new Perfil();
		if ($id>0) {
			$obj->{$obj->__dm['primaria']} = $id;
			$obj = $obj->recuperar();
			$dados['obj'] = $obj[0];
		}
		else {
			$dados['obj'] = $obj;
		}
		
		$this->template->add_js(js_url() . 'perfil/manter.js');
		$this->template->write_view('conteudo','perfil/manter', $dados);
		$this->template->render();
	}
	
	public function salvar() {
// 		$obj = new Perfil();
// 		$obj->setFrom($_POST);

// 		if ($obj->{$obj->__dm['primaria']}) {
// 		    $id = $obj->pe_id;
// 			$obj->alterar();
// 		}
// 		else
// 			$id = $obj->inserir();

//         // grid
//         // remover antes de inserir tudo de novo
//         $obj = new PerfilPermissao();
//         $obj->pe_id = $id;
//         $obj->excluir();
//         // adiciona
//         $linhas = json_decode($_POST['permissao'], true);
//         foreach ($linhas as $tmp) {
//             $obj = new PerfilPermissao();
//             $obj->pe_id = $id;
//             $obj->pr_id = $tmp['permissao']['id'];
//             $obj->inserir();
//         }
        
// 		redirect('cperfil/listar/', 'refresh');

		
		$perfil = new Perfil();
		
		$perfil->pe_nome = $this->input->post("pe_nome");
		$perfil->pe_link_inicial = $this->input->post("pe_link_inicial");
		$id = $this->input->post("pe_id");
		//salva ou altera
		if(!empty($id)){
			$perfil->pe_id = $this->input->post("pe_id");
			$perfil->alterar();
		}
		else{
			$id = $perfil->inserir();
		}
		
		//remove as permissoes do perfil
		$perfilPermissao = new PerfilPermissao();
		$perfilPermissao->pe_id = $id;
		$perfilPermissao->excluir();
		
		$permissoes = $this->input->post('pr_ids');
		$permissoes = explode(",", $permissoes);
		
		foreach ($permissoes as $perm){
			$perfilPermissao2 = new PerfilPermissao();
			$perfilPermissao2->pe_id = $id;
			$perfilPermissao2->pr_id = (int)$perm;
			$perfilPermissao2->inserir();
		}
		redirect('cperfil/listar/', 'refresh');
	}
	
	public function ajaxExcluir() {
		$perfil = new Perfil();
		$perfil->pe_id = $this->input->post('id');		
		
		$perfilPermissao = new PerfilPermissao();
		$perfilPermissao->pe_id = $perfil->pe_id;
// 		$permissoes = $perfilPermissao->recuperar();
// 		foreach ($permissoes as $perm){
// 			$pp = new PerfilPermissao();
// 			$pp->pe_id = $perm->pe_id;
// 			$pp->pr_id = $perm->pr_id;
// 			$pp->excluir();
// 		}
		
		$perfilPermissao->excluir();
		$perfil->excluir();
	}

    public function buscaAutoComplete() {
        $retorno['query'] = $this->input->get('query');
        $retorno['suggestions'] = '';
		$retorno['data'] = '';
		
		if ($retorno['query']) {
			$confirmar = $this->input->get('confirmar');
			$obj = new Permissao;
			if ($confirmar)
				$obj->{$obj->__dm['primaria']} = $retorno['query'];
			else {
                $obj->condicao("pr_acao LIKE '%{$retorno['query']}%'");
                $obj->condicao("pr_tela LIKE '%{$retorno['query']}%'", 'or');
            }
			$resultado = $obj->recuperar();

			if (count($resultado)) {
				foreach ($resultado as $tmp) {
					$retorno['data'][] = $tmp->{$obj->__dm['primaria']};
					$retorno['suggestions'][] = "{$tmp->pr_tela} ({$tmp->pr_acao})";
				}
			}
		}

		echo json_encode($retorno);
	}

    /**
     * busca incial para o grid de permissao
     *
     * @param int $id: id do perfil
     */
	public function ajaxCarregamentoInicialPermissao($id) {
        $obj = new PerfilPermissao();
        $obj->pe_id = $id;
        $r_obj = $obj->recuperar();

        foreach ($r_obj as $tmp) {
            $obj = new Permissao();
            $obj->pr_id = $tmp->pr_id;
            $r_obj2 = $obj->recuperar();
            $r_obj2 = $r_obj2[0];

            $retorno[] = array(
                'permissao' => array('id' => $r_obj2->pr_id, 'label' => "{$r_obj2->pr_tela} ($r_obj2->pr_acao)")
            );
        }

        echo json_encode($retorno); 
	}
	
	public function ajaxBuscarPerfis() {
		$limite = $this->input->get('limite');
		$inicio = ($this->input->get('pagina') - 1) * $limite;
        $order  = $this->input->get('order');
		$order = explode(' ', $order);
		$direcao = $order[1];
		
		switch ($order[0]) {
			case '2':
				$campo_ordenacao = 'pe_nome';
				break;
				
			default:
				$campo_ordenacao = 'pe_id';
		}
		
		$obj = new Perfil();
		$obj->pe_nome = $this->input->get('pe_nome') . '%';
		$resp['total'] = count($obj->recuperar());

		$obj->ordenarPor("$campo_ordenacao $direcao");
		$obj->limite($limite, $inicio);
		$objs = $obj->recuperar(); 
		
		
		$total_pagina = count($objs);
		for ($i = 0; $i < $total_pagina; $i++) {
		
		    $botoes = "<input type='image' src='" . img_url() . "icon_editar_ativo.png' alt='editar' title='Editar' onclick='manter(" . $objs[$i]->{$obj->__dm['primaria']} . ")'>";
			$botoes .= "<input type='image' src='" . img_url() . "icon_excluir_ativo.png' alt='excluir' title='Excluir' onclick='excluir(" . $objs[$i]->{$obj->__dm['primaria']} . ")'>";

			$z = 1;
			$resp['data'][$i][$z++] = $objs[$i]->pe_id;
			$resp['data'][$i][$z++] = $objs[$i]->pe_nome;
			$resp['data'][$i][$z++] = $botoes;
		}
		
		echo json_encode($resp);
	}
	
	public function  ajaxBuscarPermissaoEControlador(){
		
		$limite = $this->input->get('limite');
		$inicio = ($this->input->get('pagina') - 1) * $limite;
		$order  = $this->input->get('order');
		$order = explode(' ', $order);
		$direcao = $order[1];
		
		switch ($order[0]) {
			case '2':
				$campo_ordenacao = 'pr_tela';
				break;
						
		
			default:
				$campo_ordenacao = 'pr_id';
		}
		
		$permissao = new Permissao();
		$permissao->pr_acao =  'Total%';
		
		$permissao->ordenarPor("$campo_ordenacao $direcao");
		$permissao->limite($limite, $inicio);
		$permissoes = $permissao->recuperar();
		$resp['total'] = count($permissoes);
		
		$linhaDoGrid=0;
		foreach ($permissoes as $per){
			
			$dadosBotoes['id'] = $per->pr_id;
			$checkBox = $this->load->view('perfil/botoes',$dadosBotoes,true);;
			
			$controlador = new Controlador();
			$controlador->pr_id = $per->pr_id;			
			$controladores = $controlador->recuperar();
			
			$colunaDoGrid=1;
			$resp['data'][$linhaDoGrid][$colunaDoGrid++] = $per->pr_tela;
			$resp['data'][$linhaDoGrid][$colunaDoGrid++] = $per->pr_acao;
			$resp['data'][$linhaDoGrid][$colunaDoGrid++] = $controladores[0]->co_caminho;
			$resp['data'][$linhaDoGrid][$colunaDoGrid++] = $checkBox;
			$linhaDoGrid++;
		}
		echo json_encode($resp);
	}
	
	public function ajaxBuscarTelasDasPermissoes() {
		$permissao = new Permissao();
		$permissao->pr_tela =  $this->input->post("tela");
		$permissao->condicao('pr_acao !="Total"');
		$permissoes = $permissao->recuperar();
		
		$i=0;
		foreach($permissoes as $per){			
			$controlador = new Controlador();
			$controlador->pr_id = $per->pr_id;
			$controladores = $controlador->recuperar();		
			
			$resp['tela'][$i] = $per->pr_tela;
			$resp['acao'][$i] = $per->pr_acao;
			$resp['caminho'][$i] = $controladores[0]->co_caminho;
			$resp['ids'][$i] = $per->pr_id;
			$i++;			
		}
		echo json_encode($resp);
	}
}
